package com.tl.ip_location_relation_v4.controller;

import java.util.Scanner;

/**
 * 
 * @author Antg
 * @date 2021年7月13日
 * @Description <br>
 *              集成v1,v2,v3,v4版本 各个版本区别<br>
 *              V1: <br>
 *              1.将全部数据加载到内存中,形成一个ip对象List<br>
 *              2.对这个list进行递归二分查询<br>
 *              3.对这个list进行循环二分查询<br>
 *              4.对这个list进行从撒上到下的普通查询<br>
 * 
 *              V2: <br>
 *              对V1项目进行了如下优化<br>
 *              1.实现了将list对象缓存的功能,下次启动项目的时候会将该序列化文件反序列化<br>
 *              2.文件读取和反序列化的时候使用了ByteArrayInputStream类,加快了读取速度<br>
 * 
 *              V3: <br>
 *              对V2进行了如下优化: <br>
 *              1.将数据加载到了mysql数据库中<br>
 *              2.给数据库表加入了索引,加快了查询速度<br>
 *              3.使用到了数据库连接池技术
 * 
 *              V4: <br>
 *              对V3版本进行了如下优化: <br>
 *              1.使用了内存数据库redis,将新查的和热数据缓存到Redis当中,加速查询<br>
 *              2.整合优化了所有版本 <br>
 *              3.加入了配置类Config,使配置数据统一集中<br>
 * 
 */
public class ControllerMain {
	private static Scanner scanner = new Scanner(System.in);// 控制台输入对象
	private static String option = null;// 用户选择

	public static void run() {
		printAllFunction();
		while (true) {
			System.out.print("请输入您的操作:");
			option = scanner.next();
			// 操作校验
			if (!option.equals("0") && !option.equals("1")
					&& !option.equals("2") && !option.equals("3")
					&& !option.equals("4")) {
				System.out.println("输入错误,请重新输入");
				continue;
			}
			switch (option) {
			case "1":
				ControllerV1.run();
				break;
			case "2":
				ControllerV2.run();
				break;
			case "3":
				ControllerV3.run();
				break;
			case "4":
				ControllerV4.run();
				break;
			case "0":
				System.out.println("退出成功!");
				System.exit(0);
				break;
			}
		}
	}

	public static void printAllFunction() {
		System.out.println("===========ip归属地查询===========");
		System.out.println("          1.进入v1版本");
		System.out.println("          2.进入v2版本");
		System.out.println("          3.进入v3版本");
		System.out.println("          4.进入v4版本");
		System.out.println("          5.退出系统");
		System.out.println("===============================");
	}

}
